package org.esky.reflect;

import java.lang.reflect.Array;

/**
 * @author Jack.Xu
 * @ClassName: MyArrayRef
 * @Description: TODO
 * @author: Jack.Xu
 * @date: 2013年10月18日 下午1:54:12
 */
public class MyArrayRef {
	public static void case1() throws Throwable {
		Class<?> classType = Class.forName("java.lang.String");
		// 创建一个长度为10的字符串数组
		Object array = Array.newInstance(classType, 10);
		// 把索引位置为5的元素设为"hello"
		Array.set(array, 5, "hello");
		// 获得索引位置为5的元素的值
		String s = (String) Array.get(array, 5);
		System.out.println(s);
	}

	public static void case2() {
		int[] dims = new int[] { 5, 10, 15 };
		// 创建一个具有指定的组件类型和维度的新数组。
		Object array = Array.newInstance(Integer.TYPE, dims);
		Object arrayObj = Array.get(array, 2);
		Class<?> cls = arrayObj.getClass().getComponentType();
		System.out.println(cls);

		arrayObj = Array.get(arrayObj, 5);
		Array.setInt(arrayObj, 10, 37);
		int arrayCast[][][] = (int[][][]) array;
		System.out.println(arrayCast[3][5][10]);
	}
}
